// console.log('视频录制插件content.js已加载');

// // 将初始化逻辑提取为独立函数
// function initVideoRecording () {
//   // 添加重试次数限制
//   let retryCount = 0;
//   const maxRetries = 5; // 最多重试5次

//   // 查找所有视频元素并添加录制按钮
//   const videos = document.querySelectorAll('video');
//   console.log(`第${retryCount + 1}次查询视频元素:`, videos);
//   console.log('视频元素数量:', videos.length);

//   if (videos.length > 0) {
//     Array.from(videos).forEach(video => addRecordButton(video));
//     // 重置重试计数
//     retryCount = 0;

//     // 监听动态添加的视频元素
//     const observer = new MutationObserver(mutations => {
//       mutations.forEach(mutation => {
//         mutation.addedNodes.forEach(node => {
//           if (node.tagName === 'VIDEO') {
//             addRecordButton(node);
//           } else if (node.querySelectorAll) {
//             const childVideos = node.querySelectorAll('video');
//             childVideos.forEach(video => addRecordButton(video));
//           }
//         });
//       });
//     });

//     console.log('已启动DOM变化监听');
//     observer.observe(document.body, { childList: true, subtree: true });
//   } else if (retryCount < maxRetries) {
//     retryCount++;
//     const delay = 3000 * retryCount; // 指数退避：3s, 6s, 9s...
//     console.log(`未找到视频元素，将在${delay / 1000}秒后重试（${retryCount}/${maxRetries}）`);
//     setTimeout(initVideoRecording, delay);
//   } else {
//     console.log(`已达到最大重试次数(${maxRetries}次)，停止查找视频元素`);
//   }
// }

// // 确保在DOM加载完成后执行
// if (document.readyState === 'loading') {
//   window.addEventListener('DOMContentLoaded', initVideoRecording);
// } else {
//   initVideoRecording();
// }


// function addRecordButton (video) {
//   // 避免重复添加按钮
//   if (video.parentNode.querySelector('.record-button')) return;
//   console.log('已经添加了录制按钮');

//   // 创建录制按钮
//   const button = document.createElement('button');
//   button.className = 'record-button';
//   button.textContent = '录制视频';
//   button.style.position = 'absolute';
//   button.style.top = '10px';
//   button.style.right = '10px';
//   button.style.zIndex = '9999';
//   button.style.padding = '8px 12px';
//   button.style.backgroundColor = '#ff0000';
//   button.style.color = 'white';
//   button.style.border = 'none';
//   button.style.borderRadius = '4px';
//   button.style.cursor = 'pointer';
//   button.style.fontSize = '14px';

//   // 确保视频容器是相对定位
//   const container = video.parentNode;
//   if (getComputedStyle(container).position === 'static') {
//     container.style.position = 'relative';
//   }

//   // 将按钮添加到视频容器
//   container.appendChild(button);

//   let mediaRecorder;
//   let recordedBlobs = [];

//   button.addEventListener('click', function () {
//     if (button.textContent === '录制视频') {
//       // 开始录制
//       startRecording(video);
//       button.textContent = '停止录制';
//       button.style.backgroundColor = '#00ff00';
//     } else {
//       // 停止录制
//       stopRecording();
//       button.textContent = '录制视频';
//       button.style.backgroundColor = '#ff0000';
//     }
//   });

//   function startRecording (videoElement) {
//     recordedBlobs = [];

//     // 检查视频元素是否就绪
//     if (videoElement.readyState < 2) {
//       console.log('视频尚未就绪，等待加载...');
//       alert('请等待视频加载完成后再尝试录制');
//       return;
//     }

//     try {
//       // 确保视频处于播放状态
//       if (videoElement.paused) {
//         console.log('视频处于暂停状态，尝试播放...');
//         // 使用async/await确保播放完成后再获取流
//         videoElement.play().then(() => {
//           console.log('视频播放成功，等待流准备...');
//           // 视频播放后延长延迟时间确保流可用
//           setTimeout(() => captureVideoStream(videoElement), 1500);
//         }).catch(e => {
//           console.error('自动播放失败:', e);
//           alert('录制需要视频处于播放状态，请先手动播放视频');
//           return;
//         });
//       } else {
//         // 视频已在播放，直接捕获流
//         captureVideoStream(videoElement);
//       }
//     } catch (e) {
//       console.error('创建MediaRecorder失败:', e);
//       alert('无法开始录制: ' + e.message);
//       return;
//     }
//   }

//   // 提取流捕获逻辑为独立函数
//   function captureVideoStream (videoElement) {
//     try {
//       const stream = videoElement.captureStream();
//       console.log('成功获取视频流');

//       // 检查流中是否有视频轨道
//       if (stream.getVideoTracks().length === 0) {
//         console.error('视频流中没有视频轨道');
//         alert('无法获取视频流，请重试');
//         return;
//       }

//       mediaRecorder = new MediaRecorder(stream);
//       mediaRecorder.ondataavailable = function (event) {
//         if (event.data && event.data.size > 0) {
//           recordedBlobs.push(event.data);
//           console.log('已收集录制数据块:', recordedBlobs.length);
//         }
//       };

//       mediaRecorder.onstop = downloadVideo;
//       mediaRecorder.onerror = function (error) {
//         console.error('MediaRecorder错误:', error);
//         alert('录制发生错误: ' + error.message);
//       };

//       // 调整数据收集间隔为100ms，减少性能压力
//       mediaRecorder.start(100);
//       console.log('开始录制视频');
//     } catch (e) {
//       console.error('创建MediaRecorder失败:', e);
//       alert('无法开始录制: ' + e.message);
//       return;
//     }
//   }

//   // 停止录制
//   function stopRecording () {
//     if (mediaRecorder && mediaRecorder.state !== 'inactive') {
//       mediaRecorder.stop();
//       console.log('停止录制视频');
//     }
//   }

//   // 视频下载
//   function downloadVideo () {
//     try {
//       const blob = new Blob(recordedBlobs, { type: 'video/mp4' });
//       const url = URL.createObjectURL(blob);
//       const a = document.createElement('a');
//       a.href = url;
//       a.download = '录制视频_' + new Date().toISOString().replace(/[:.]/g, '-') + '.mp4';
//       document.body.appendChild(a);
//       a.click();
//       setTimeout(() => {
//         document.body.removeChild(a);
//         URL.revokeObjectURL(url);
//       }, 100);
//     } catch (e) {
//       console.error('下载视频失败:', e);
//       alert('下载视频时出错: ' + e.message);
//     }
//   }
// }



// {
//   "manifest_version": 3,
//   "name": "视频录制插件",
//   "version": "1.0",
//   "description": "在页面视频元素上添加录制按钮",
//   "content_scripts": [
//     {
//       "matches": [
//         "<all_urls>"
//       ],
//       "js": [
//         "content.js"
//       ],
//       "run_at": "document_end"
//     }
//   ],
//   "permissions": [
//     "activeTab",
//     "downloads"
//   ]
// }










// 等待页面加载完成
window.addEventListener('load', () => {
  // 处理已存在的视频元素
  processVideos();

  // 监听页面动态加载的视频元素
  observeDynamicVideos();
});

// 处理页面中所有视频元素
function processVideos () {
  const videos = document.getElementsByTagName('video');
  Array.from(videos).forEach(video => {
    addRecordButton(video);
  });
}

// 监听动态添加的视频元素
function observeDynamicVideos () {
  const observer = new MutationObserver(mutations => {
    mutations.forEach(mutation => {
      mutation.addedNodes.forEach(node => {
        // 如果添加的是视频元素
        if (node.tagName === 'VIDEO') {
          addRecordButton(node);
        }
        // 如果添加的是包含视频的容器
        else if (node.querySelectorAll) {
          const newVideos = node.querySelectorAll('video');
          Array.from(newVideos).forEach(video => {
            addRecordButton(video);
          });
        }
      });
    });
  });

  // 监听整个文档的变化
  observer.observe(document.body, {
    childList: true,
    subtree: true
  });
}

// 为视频添加录制按钮
function addRecordButton (video) {
  // 避免重复添加按钮
  if (video.parentNode.querySelector('.video-recorder-btn')) {
    return;
  }

  // 设置视频容器为相对定位，使按钮可以绝对定位
  if (window.getComputedStyle(video.parentNode).position === 'static') {
    video.parentNode.style.position = 'relative';
  }

  // 创建录制按钮
  const button = document.createElement('button');
  button.className = 'video-recorder-btn';
  button.textContent = '录制';
  button.style.cssText = `
    position: absolute;
    left: 10px;
    bottom: 10px;
    z-index: 1000;
    padding: 6px 12px;
    background-color: #ff3b30;
    color: white;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 500;
    transition: all 0.2s;
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
  `;

  // 录制相关变量
  let mediaRecorder;
  let recordedBlobs = [];
  let isRecording = false;

  // 按钮点击事件处理
  button.addEventListener('click', async (e) => {

    // 阻止事件冒泡到父元素（视频）
    e.stopPropagation();
    // 阻止默认行为
    e.preventDefault();

    if (!isRecording) {
      // 开始录制
      try {
        // 获取视频流
        const stream = video.captureStream ? video.captureStream() : video.mozCaptureStream();

        if (!stream) {
          alert('无法获取视频流，可能不支持该视频');
          return;
        }

        recordedBlobs = [];

        // 配置录制选项
        const options = {
          mimeType: 'video/webm; codecs=vp9'
        };

        try {
          mediaRecorder = new MediaRecorder(stream, options);
        } catch (e) {
          console.error('创建MediaRecorder失败:', e);
          alert('无法开始录制，您的浏览器可能不支持此功能');
          return;
        }

        // 处理录制数据
        mediaRecorder.ondataavailable = event => {
          if (event.data && event.data.size > 0) {
            recordedBlobs.push(event.data);
          }
        };

        // 开始录制
        mediaRecorder.start();
        isRecording = true;
        button.textContent = '停止录制';
        button.style.backgroundColor = '#34c759';
        console.log('录制已开始');
      } catch (e) {
        console.error('开始录制失败:', e);
        alert('开始录制失败: ' + e.message);
      }
    } else {
      // 停止录制
      mediaRecorder.stop();
      isRecording = false;
      button.textContent = '录制';
      button.style.backgroundColor = '#ff3b30';
      console.log('录制已停止');

      // 录制完成后处理
      mediaRecorder.onstop = () => {
        // 创建视频 blob
        const blob = new Blob(recordedBlobs, { type: 'video/webm' });
        const url = window.URL.createObjectURL(blob);

        // 创建下载链接
        const a = document.createElement('a');
        a.style.display = 'none';
        a.href = url;

        // 生成带时间戳的文件名
        const date = new Date();
        const fileName = `录制视频-${date.getFullYear()}${(date.getMonth() + 1).toString().padStart(2, '0')}${date.getDate().toString().padStart(2, '0')}-${date.getHours().toString().padStart(2, '0')}${date.getMinutes().toString().padStart(2, '0')}${date.getSeconds().toString().padStart(2, '0')}.mp4`;

        a.download = fileName;
        document.body.appendChild(a);
        a.click();

        // 清理资源
        setTimeout(() => {
          document.body.removeChild(a);
          window.URL.revokeObjectURL(url);
        }, 100);
      };
    }
  });

  // 添加悬停效果
  button.addEventListener('mouseover', () => {
    button.style.transform = 'scale(1.05)';
  });

  button.addEventListener('mouseout', () => {
    button.style.transform = 'scale(1)';
  });

  // 将按钮添加到视频容器
  video.parentNode.appendChild(button);
}
